home *** CD-ROM | disk | FTP | other *** search
/ Apple II Magazines (PO) / Nibble Volume 11, No. 11 (1990-11)(MindCraft Publishing)(Side A)[a].zip / Nibble Volume 11, No. 11 (1990-11)(MindCraft Publishing)(Side A)[a].po / METRIC.CONV.bas < prev    next >
BASIC Source File  |  1996-12-24  |  6KB  |  124 lines

  1. 1  REM  *************************
  2. 2  REM  * METRIC.CONVERT        *
  3. 3  REM  * BY JARY NEMO          *
  4. 4  REM  * COPYRIGHT (c) 1990    *
  5. 5  REM  * MINDCRAFT PUBL. CORP. *
  6. 6  REM  * CONCORD, MA 01742     *
  7. 7  REM  *************************
  8. 20  ONERR  GOTO 1170: REM  The following fields (between : symbols in print statements) contain 28 characters (including the colons)
  9. 30  HOME : HTAB 7: VTAB 7: INVERSE : PRINT ":                          :"
  10. 40  HTAB 7: PRINT ":        CONVERSION        :"
  11. 50  HTAB 7: PRINT ":       BY JARY NEMO       :"
  12. 60  HTAB 7: PRINT ":                          :": HTAB 7: PRINT ":    COPYRIGHT (C) 1990    :": HTAB 7: PRINT ": BY MINDCRAFT PUBL. CORP. :": HTAB 7: PRINT ":                          :": NORMAL 
  13. 70  VTAB 20: HTAB 7: PRINT "Press any key to continue.";: GET ZZ$
  14. 80 X = 31: DIM I$(X): DIM M$(X): DIM MI(X): DIM IM(X): DIM NT(X): DIM T$(X):X = 1:VC = 11
  15. 90  READ NT(X): READ T$(X): IF T$(X) = "LAST"  THEN  GOTO 130
  16. 100 FR = X:WD = X +NT(X)
  17. 110  FOR X = FR TO WD: READ I$(X): READ M$(X): READ MI(X): READ IM(X): NEXT 
  18. 120  GOTO 90
  19. 130  POKE 34,6: HOME : VTAB 4
  20. 140  FOR X = 0 TO 39: PRINT "_";: NEXT 
  21. 150  REM    MAIN MENU
  22. 160  HOME : VTAB 3: CALL 64668: HTAB 10: PRINT "MAIN MENU"
  23. 170  HOME : PRINT "[1] LENGTH"
  24. 180  PRINT : PRINT "[2] MASS"
  25. 190  PRINT : PRINT "[3] AREA"
  26. 200  PRINT : PRINT "[4] VOLUME"
  27. 210  PRINT : PRINT "[5] VOLUME (liquids)"
  28. 220  PRINT : PRINT "[6] TEMPERATURE"
  29. 230  PRINT : INVERSE : PRINT "[0] OTHER";: HTAB 15: PRINT "[9] QUIT";: NORMAL 
  30. 240  GET X:S =  PEEK(49200)
  31. 250  IF X = 9  THEN  GOTO 1140
  32. 260  IF X = 1  THEN  GOTO 490
  33. 270  IF X = 2  THEN X = 5: GOTO 490
  34. 280  IF X = 3  THEN X = 8: GOTO 490
  35. 290  IF X = 4  THEN X = 13: GOTO 490
  36. 300  IF X = 5  THEN X = 17: GOTO 490
  37. 310  IF X = 6  THEN X = 22: GOTO 490
  38. 320  IF X = 0  THEN  GOTO 340
  39. 330  GOTO 170
  40. 340  HOME : PRINT "[1] FORCE"
  41. 350  PRINT : PRINT "[2] PRESSURE"
  42. 360  PRINT : PRINT "[3] ANGULAR VELOCITY"
  43. 370  PRINT : PRINT "[4] VELOCITY"
  44. 380  PRINT : PRINT "[5] ENERGY"
  45. 390  PRINT : PRINT "[6] POWER"
  46. 400  PRINT : PRINT : HTAB 18: INVERSE : PRINT "[0] GO BACK";: NORMAL 
  47. 410  GET X:S =  PEEK(49200)
  48. 420  IF X = 1  THEN X = 23: GOTO 490
  49. 430  IF X = 2  THEN X = 24: GOTO 490
  50. 440  IF X = 3  THEN X = 26: GOTO 490
  51. 450  IF X = 4  THEN X = 27: GOTO 490
  52. 460  IF X = 5  THEN X = 28: GOTO 490
  53. 470  IF X = 6  THEN X = 30: GOTO 490
  54. 480  GOTO 170
  55. 490  HOME : VTAB 3: CALL 64668:C =  INT( LEN(T$(X))/2): HTAB 16 -C: PRINT T$(X)
  56. 500  HOME : VTAB 10: PRINT "[1] IMPERIAL TO METRIC"
  57. 510  PRINT : PRINT "[2] METRIC TO IMPERIAL"
  58. 520  PRINT : INVERSE : HTAB 16: PRINT "[0] GO BACK";: NORMAL : GET CN:S =  PEEK(49200): IF CN <1  OR CN >2  THEN  GOTO 170
  59. 530  REM      Secondary Menu
  60. 540  IF CN = 2  THEN  GOTO 720
  61. 550  REM      Imperial to Metric menu
  62. 560  IF NT(X) = 0  THEN  GOTO 610
  63. 570  HOME : FOR M = 0 TO NT(X): PRINT "[";M +1;"] ";I$(X +M);" to ";M$(X +M): PRINT : NEXT 
  64. 580  PRINT : INVERSE : PRINT "[0] GO BACK": NORMAL 
  65. 590  GET CH:S =  PEEK(49200): IF CH >NT(X) +1  THEN  GOTO 570
  66. 600 X = X +CH -1: IF CH = 0  THEN  GOTO 160
  67. 610  HOME : PRINT "Convert ";I$(X)
  68. 620  PRINT "to ";M$(X)
  69. 630  VTAB VC: PRINT "Enter the No. of ";I$(X)
  70. 640  PRINT "to be converted and press [return]"
  71. 650  PRINT : PRINT I$(X);: INPUT ":";D
  72. 660 A = D *IM(X): IF X = 22  THEN A = 5/9 *(D -32)
  73. 670  HOME : PRINT "ANSWER": VTAB VC: PRINT D;" ";I$(X);" Equals....."
  74. 680  PRINT : PRINT A;" ";M$(X)
  75. 690  GOSUB 880
  76. 700  GOTO 610
  77. 710  REM      Metric to Imperial menu
  78. 720  IF NT(X) = 0  THEN  GOTO 770
  79. 730  HOME : FOR M = 0 TO NT(X): PRINT "[";M +1;"] ";M$(X +M);" to ";I$(X +M): PRINT : NEXT 
  80. 740  PRINT : INVERSE : PRINT "[0] GO BACK": NORMAL 
  81. 750  GET CH:S =  PEEK(49200): IF CH >NT(X) +1  THEN  GOTO 730
  82. 760 X = X +CH -1: IF CH = 0  THEN  GOTO 160
  83. 770  HOME : PRINT "Convert ";M$(X)
  84. 780  PRINT "to ";I$(X)
  85. 790  VTAB VC: PRINT "Enter the No. of ";M$(X)
  86. 800  PRINT "to be converted and press [return]"
  87. 810  PRINT : PRINT M$(X);: INPUT ":";D
  88. 820 A = D *MI(X): IF X = 22  THEN A = 1.8 *D +32
  89. 830  HOME : PRINT "ANSWER": VTAB VC: PRINT D;" ";M$(X);" Equals....."
  90. 840  PRINT : PRINT A;" ";I$(X)
  91. 850  GOSUB 880
  92. 860  GOTO 770
  93. 870  REM      Continue or not
  94. 880  VTAB 17: INVERSE : PRINT "[SPACE] TO CONTINUE": PRINT : PRINT "[ESC] TO MAIN MENU"
  95. 890  NORMAL : GET RT$:S =  PEEK(49200): IF RT$ =  CHR$(32)  THEN  RETURN 
  96. 900  POP : GOTO 160
  97. 910  DATA  3,LENGTH,inch(s),centimetre(s),.394,2.5380,feet,metre(s)
  98. 920  DATA  3.28,.3049,yard(s),metre(s),1.0941,.914,mile(s),kilometre(s)
  99. 930  DATA  .6211,1.61,2,MASS,ounce(s),gram(s),.0353,28.3,pound(s)
  100. 940  DATA  kilogram(s),2.2,.4545,ton(s),tonne(s),.984,1.0163,4,AREA
  101. 950  DATA  squ inch(s),squ centimetre(s),.155,6.45,squ feet
  102. 960  DATA  squ metre(s),10.8,.0926,squ yard(s),squ metre(s)
  103. 970  DATA  1.1963,.836,acre(s),hectare(s),2.4691,.405,squ mile(s)
  104. 980  DATA  squ kilometre(s),.3861,2.59,3,VOLUME,cubic inch(es)
  105. 990  DATA  cubic centimetre(s),.0610,16.4,cubic feet,cubic metre(s)
  106. 1000  DATA  35.3,.0283,cubic yard(s),cubic metre(s),1.3072,.765,bushel(s)
  107. 1010  DATA  cubic metre(s),27.4725,.0364,4,VOLUME (fluids),fluid ounce(s)
  108. 1020  DATA  millilitre(s),.0352,28.4091,pint(s),litre(s),1.7599,.5682
  109. 1030  DATA  (imp) gallon(s),litre(s),.2198,4.5496,(imp) gallon(s),(US) gallon(s)
  110. 1040  DATA  .8327,1.2009,(US) gallon(s),litre(s),.2642,3.785,0,TEMPERATURE
  111. 1050  DATA  degrees Farhenheit,degrees Celcius,0,0,0,FORCE,pound-force,newton(s)
  112. 1060  DATA  .2247,4.4503,1,PRESSURE,pound(s) per squ inch,kilopascal(s)
  113. 1070  DATA  .1451,6.89,inch(s) of mercury,millibar(s),.0295,33.9
  114. 1080  DATA  0,ANGULAR VELOCITY,revolution(s) per minute,radian(s) per second
  115. 1090  DATA  9.55,.1047,0,VELOCITY,mile(s) per hour,kilometre(s) per hour
  116. 1100  DATA  .6211,1.61,1,ENERGY,British thermal unit(s),kilojoule(s),.9434
  117. 1110  DATA  1.06,therm,megajoule,9.48E-3,6.0445,0,POWER,horse power,kilowatt
  118. 1120  DATA  1.3405,.746,0,LAST
  119. 1130  REM       QUIT
  120. 1140  HOME : INVERSE : PRINT "DO YOU REALY WANT TO QUIT (Y/N)": NORMAL : GET A$:AS =  PEEK(49200): IF A$ < >"Y"  AND A$ < >"y"  THEN  GOTO 170
  121. 1150  POKE 34,0: HOME : END 
  122. 1160  REM  ERR ROUTINE
  123. 1170 ER =  PEEK(222):LN =  PEEK(219) *256 + PEEK(218)
  124. 1180  HOME : VTAB 10: HTAB 8: PRINT  CHR$(7): INVERSE : PRINT "SORRY! I DON'T RECOGNISE THAT COMMAND.": PRINT : NORMAL : PRINT "Press any key to continue ...";: GET ZZ$: GOTO 160